ARTICLES > PHP

[PHP] ดึงอัตราแลกเปลี่ยนจาก API ธนาคารชาติ (2022) Turn Back

2019-02-25 15:48:24

 

จากที่ก่อนหน้านี้ (ปลายปี2018) ทางธนาคารแห่งประเทศไทย (ธปท)
ได้พัฒนา API Exchange Rate จากเวอร์ชั่นเก่า มาเป็นตัวใหม่
ส่งผลให้ Application ของเว็บไซ์ที่เคยเขียนไว้ ไม่สามารถเชื่อมต่อ API ตัวเดิมได้

ดังนั้นเราจะมาลองเชื่อมต่อ API เวอร์ชั่นใหม่นี้ (Exchange Rate 2.0.1)

1. เข้าเว็บไซต์ของ ธปท. https://www.bot.or.th/ แล้วไปที่ลิ้งค์หน้า BOT API (Click)

 

2. เลือกเมนู API Product และทำการ Subscribe API ที่ชื่อ Exchang Rate

** ต้อง Login เข้าระบบก่อน หากยังไม่ได้ Register ก็ให้สมัครใช้งานเป็น Developer ก่อนนะครับ

ถึงตรงนี้ถ้า งงๆ ก็ให้ไปใช้เมนู Getting started นะครับ จะมีขั้นตอนบอกไว้ค่อนข้างละเอียดเลย

 

3. หลังจาก Subscribe ในหน้าหลักของ Exchange Rate API 
ที่เมนูย่อยด้านข้าง ผมเลือกเป็น Exchange rate THB/ US

เสร็จแล้วจะมี tab Coding guide ให้เราเลือก PHP
ให้ลอง copy ตัวอย่างโค้ดนั้นมาได้เลย โดยให้เปลี่ยน parameter ตามที่เราต้องการ

 

ตัวอย่าง Coding

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://apigw1.bot.or.th/bot/public/Stat-ReferenceRate/v2/DAILY_REF_RATE/?start_period=REPLACE_THIS_VALUE&end_period=REPLACE_THIS_VALUE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "x-ibm-client-id: REPLACE_THIS_KEY"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

 

จากโค้ดด้านบน .ให้เราใส่ค่า start_period, end_period (ช่วงวันที่ อัตราแลกเปลี่ยน)
เราสามารถใช้ PHP Date ได้เลย เช่น วันปัจจุบัน date("Y-m-d")
และก็เปลี่ยนตรง client-id: เป็น key ที่ได้มาตอน subscribe

เมื่อใส่ค่าพารามิตเตอร์ครบแล้ว ก็ลองรันไฟล์นี้ดู จะได้ข้อมูลฟอร์แมท  JSON ออกมา

5. ขั้นต่อไป เราต้องการข้อมูลเฉพาะ ตัวเลขค่าเงินบาท ก็ใช้คำสั่ง Decode JSON ก่อน

$obj = json_decode($response, true);

เมื่อได้ Object มาแล้ว เราก็ลองมาไล่ key array เพื่อดึง
เฉพาะค่าอัตราแลกเปลี่ยน และเป็นข้อมูลวันล่าสุด ออกมา

echo $obj['result']['data']['data_detail'][0]['rate'];

 

*** คุณสามารถ var_dump($obj) ข้อมูลออกมาดูก่อนก็ได้ ว่าจะเข้าถึงแต่ละ node อย่างไร
 

 

Turn Back